#ifndef __COMUN_SORT_H
#define __COMUN_SORT_H

/*****************************************************************************
*                     Organizaci�n de Datos - 75.06                          *
*                         C�tedra Lic. Servetto                              *
*            Facultad de Ingenier�a - Universidad de Buenos Aires            *
******************************************************************************/ 

#include <string>
#include <vector>
#include "Condiciones.h"

using namespace std;

namespace Comun
{
	class Sort{
		public:

			Sort(string NArchivo, Atributo COrden, bool ERepetidos, bool Asc);
			virtual ~Sort();
			
			void SortExterno(string nombreArchivo);//char* NombreArchivo, /*Atributo campo,*/ bool EliminarRepetidos, bool Ascendente);

		private:
			string NombreArchivo;
			bool EliminarRepetidos;
			bool Ascendente;
			int posCampo;
			Atributo campo;
			string ObtenerValorDelCampo(string linea);
			void CalcularPosicionDelCampo();
			void quicksort( vector<string>* vect, int primero, int ultimo,bool Ascendente );
			void swap( string * const ptr1, string * const ptr2 );
			int particion( vector<string>* vect, int izquierda, int derecha, bool Ascendente);
			int CompararLineas(string LineaMenor, string LineaAux, bool Ascendente);
			string unirarchivos(int NarchTempMax, bool EliminarRepetidos, bool Ascendente, string Cabecera, string nombreArchivo);
			long CalcularBufferLibre(long cantcaracteres,string aux,bool* bufferlleno);
	};
}

#endif
